rest |
您所在的位置:网站首页 › rest framework source用法 › rest |
DRF提供了默认的分页空间给开发者使用,只有在使用通用视图(generic views) 或视图集(viewsets)时才会自动触发分页控件,若使用的是APIView,需要自己实现分页API,可参考GenericAPIView源码。 使用generic views来默认调用pagination 我们可以在settings.py中设置全局的分页控件配置,如下: REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'apps.core.pagination.PageNumberPagination', 'PAGE_SIZE': 10, }设置完成后,我们在views中使用的generic和viewset,就会对使用list的方法默认做分页。 当然,我们也可以在视图中指定分页空间,新增如下分页类(需集成PageNumberPagination): class CustomPagination(PageNumberPagination): page_size = 4 page_size_query_param = 'page_size' max_page_size = 10000在view中,使用方法如下: from rest_framework.pagination import PageNumberPagination from rest_framework.generics import ListAPIView class CustomPagination(PageNumberPagination): page_size = 4 page_size_query_param = 'page_size' max_page_size = 10000 class TestView(ListAPIView): queryset = ComModel.objects.all() serializer_class = ComSerializer pagination_class = CustomPagination用APIView等视图使用分页控件 上述所说,如果使用APIView等若想要使用分页控件,需要自己调用分页API,我们编写测试代码如下: from rest_framework.views import APIView from core.models import ComModel from core.api.serializers import ComSerializer from rest_framework.pagination import PageNumberPagination class CustomPagination(PageNumberPagination): page_size = 4 page_size_query_param = 'page_size' max_page_size = 10000 class TestView(APIView): # queryset = ComModel.objects.all() # serializer_class = ComSerializer pagination_class = CustomPagination # authentication_classes = (BasicAuthentication, ) # permission_classes = [IsAuthenticated] # parser_classes = (FormParser,) def get(self, request): queryset = ComModel.objects.all() print('++++++++++', queryset) print("=============", queryset[0].content) page = CustomPagination() instance = page .paginate_queryset(queryset) if instance is not None: serializer = ComSerializer(instance, many=True) return page .get_paginated_response(serializer.data) serializer = ComSerializer(queryset, many=True) return Response(serializer.data)页面截图如下: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |